home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD School House 9
/
CD School House 9.0 - Wayzata Technology (1994).iso
/
pc
/
dos
/
math
/
lp100210
/
lp100.txt
< prev
next >
Wrap
Text File
|
1989-03-18
|
53KB
|
1,333 lines
■ LP100
LP100 is a linear programming optimizer developed for either maximizing
or minimizing small to medium sized mathematical programming problems
in which all the relationships between variables are linear. It finds
a BEST feasible solution to any continuous or all-integer constrained
optimization problem of this type and reports on the activities and levels
required to maximize profit or minimize cost. LP100 also reports on
alternate optima, shadow prices, and ranges over which the shadow prices
are valid and also ranges over which profit/cost inputs and right-hand-side
(RHS) values can vary without altering the solution.
LP100 can use either LOTUS 1-2-3/Symphony spreadsheet files or ASCII
files for data input.
Output may consist of useful model debugging information such as
objective function and constraint listings, a condensed matrix map,
the initial and last tableaux, or all tableaux.
Output can be sent to a printer or to a disk file. Registered versions
allow the analysis and solution to be read directly by LOTUS spreadsheets.
■ INPUT FILE
LP100 uses an ASCII file for data input. Any text editor or word processor
that can output unformatted ASCII text may be used. LOTUS 1-2-3 or
Symphony (or any 1-2-3 compatible spreadsheet such as VP-Planner) can be
used for creating the data file, as well.
NOTE: The length of any line should not exceed 2,300 characters. This is
approximately 256 spreadsheet columns per row.
A demonstration program, LPDEMO.EXE, is included.
A batch facility is available in LP100. This allows LP100 to solve up to
six LP problems per run without the need of using DOS's COMMAND batch
facility. Such a file is to include only the LP filenames followed by any
command line options and should contain no blank lines. To specify a
batch file to LP100, precede the filename with an @ on the command line.
E.g., if the batch file is named BATCHRUN.BLP, use C>LP100 @BATCHRUN.BLP.
NOTE: The @ is not part of the filename.
SEE ALSO: EXAMPLE, SPREADSHEET, LPEDIT.COM, LINE OPTIONS, LPDEMO.EXE
■ - EXAMPLE
TITLE: An example of an LP100 data file.
OUTPUT: EXAMPLE.OUT
LISTING: YES
MAP: YES
TABLEAU: YES
ANALYSIS: YES * anything after a '*' on a line is a comment
VAR: 3 LTE: 2 GTE: 0 EQU: 1
FUNCTION: MAX: .185 stock + .090 bond -.150 loan
MxLoan loan <= 5000 * no coefficient implies coefficient of 1.00
MxStk stock <= 4000
MxCash stock + bond - loan = 10000
END:
NOTE: It is not neccesary to use + operators between variables, e.g.,
...MAX: .185 stock .090 bond -.150 loan is acceptable, as is
...MAX: +.185 stock +.090 bond + -.150 loan.
SEE ALSO: OBJECTIVE FUNCTION, VARIABLES, CONSTRAINTS, SPREADSHEET
■ STARTING LP100
To give LP100 a go, have LP100.EXE in your PATH and EXAMPLE.LP in the
current directory, then type:
C>LP100 EXAMPLE.LP
In just a few seconds it's finished. Now do (printer on?):
C>COPY EXAMPLE.LP PRN
... then do (you may want to advance the printer to the top-of-page):
C>COPY EXAMPLE.OUT PRN
The file EXAMPLE.LP is the data file that LP100 used and EXAMPLE.OUT is the
file that LP100 created for the output.
If you do not have a printer, have LPEDIT.COM in your PATH and EXAMPLE.OUT
in the current directory, then type:
C>LPEDIT EXAMPLE.OUT
SEE ALSO: LPEDIT.COM
■ LINE OPTIONS
LP100 allows the user to override specific switches that may have been
specified in the LP100 data file by using command line options after the
LP100 input data file specification. These command line options are:
/O:filename specify the output destination
/I:nn specify all-integer solution max of nn cutplanes (nn=0 to 99)
/Z:nn specify tolerance of zero (nn=.000000000001 to .9)
/PL:OFF suppress printer page length codes (page length from 88 to 66)
/PW:OFF suppress printer page width code (page width remains 132)
/FF:OFF suppress all form feeds except at end of report
/L or /NL turn listing on or off (/Nx turns switch off)
/M or /NM turn map on or off
/T or /NT turn tableaux on (I&L) or off
/A or /NA turn analysis on or off
C>LP100 EXAMPLE.LP /O:PRN /NL /NM /NT /NA would send output to the printer
and turn off the switches regardless of the declarations in EXAMPLE.LP.
SEE ALSO: OUTPUT:, INTEGER:, TZERO:, LISTING:, MAP:, TABLEAU:, ANALYSIS:
■ COMMENTS
COMMENTS are used in LP100's input file when circumstances dictate that
an explanation should be used to describe an item that is not readily
apparent. They may appear anywhere except on the TITLE: line.
To include comments in the input file, begin the comment with an asterisk.
All characters following the * to the end of that line are skipped.
E.g.,
* LP data file for BUDGETING 1990 MODEL A1B.
VAR: 233 * the constraints & variables were developed
LTE: 35 * jointly by the OR & MIS departments
GTE: 55 *
EQU: 22
SEE ALSO: END:
■ KEYWORDS
Keywords are the means by which the user declares the problem to LP100.
Some keywords, such as those that instruct LP100 on the specifications
of the problem, are required while some are optional. Optional keywords
instruct LP100 to alter its programmed procedures to user specifications.
All keywords in LP100 end with a colon.
TITLE: Trial MX01 * this is optional
and,
VAR: 52 LTE: 22 GTE: 44 EQU: 0 * these are required
and,
FUNCTION: MAX: 59.03 VAR1 + 35.57 VAR2 * these are required
The part up to MAX: (or MIN:) is the declarative portion. The
part after is the problem definition portion.
■ - TITLE:
TITLE: is an optional keyword. Its purpose is to allow the user to
specify the title used for each page heading.
NOTE: Only the first 48 characters following TITLE: will be used.
The keyword NAME: may be used interchangably with TITLE:, e.g.,
TITLE: Operations Research Planning Model 20A
or,
NAME: Operations Research Planning Model 20A
If TITLE: or NAME: is not used, the input filename is used by default.
SEE ALSO: KEYWORDS
■ - OUTPUT:
OUTPUT: is an optional keyword. Its purpose is to allow the user to
specify which device the output is to be sent.
To send the output to disk, indicate the filename after OUTPUT:, e.g.,
OUTPUT: C:\OR\B90\MODEL20A.OUT
In registered versions, output in LOTUS 1-2-3 format is done by specifying
a filename extension of WKS, e.g., OUTPUT: C:\123\MODEL20A.WKS
NOTE: Only the analysis and solution sections are in 1-2-3 format; the
listings, map, and tableaux are in ASCII format and will be
overwritten if there are no errors in the data file.
To send the output directly to the printer use PRN. PRN is a
device name that DOS recognizes as the printer, e.g., OUTPUT: PRN
If OUTPUT: is not used, the input filename.OUT is used by default.
SEE ALSO: KEYWORDS, LINE OPTIONS
■ - LISTING:
LISTING: is an optional keyword. Its purpose is to allow the user to
specify if listings of the objective function and constraints are to be
output.
The listing numbers each objective function variable, showing its name
and coefficient and whether the objective is to maximize or minimize the
function. For each constraint, its name, matrix row position, and the
coefficient and name of the non-zero variables and the value of the RHS
is given.
If the RHS of a constraint is negative, an N precedes its name. It will
have been multiplied through by -1 and the type changed if an inequality.
To activate the listing, use YES. For no listing use NO. E.g.,
LISTING: YES * If LISTING: is not used, NO is used by default.
SEE ALSO: KEYWORDS, LISTING SECTION, LINE OPTIONS
■ - MAP:
MAP: is an optional keyword. Its purpose is to allow the user to specify
if a mapping of the initial matrix is to be output.
The map is shown in condensed form with variable names output vertically
and the constraint names along the left. For each matrix position a
symbol is used to indicate in which range that value is. For instance,
all zero elements show as blanks, all one elements as 1, greater than 1
but less than 10 as W, and so on. Atop each map page a legend is
displayed for easy interpretation of the map symbols.
To activate the mapping, use YES. For no mapping use NO. E.g.,
MAP: YES * If MAP: is not used, NO is used by default.
SEE ALSO: KEYWORDS, MAP SECTION, LINE OPTIONS
■ - TABLEAU:
TABLEAU: is an optional keyword. Its purpose is to allow the user to
specify if tableaux are to be output.
The tableau that is output is of the last iteration completed. The
objective function variables and values are listed. The variables in the
current basis along with their row elements and RHSs follow. A Z follows
the objective function evaluation and an R follows each of the RHS values.
To activate tableau output of the initial and last tableaux only,
use YES, or I&L. To output all tableaux, use ALL. E.g.,
TABLEAU: YES * or TABLEAU: I&L
or, for all,
TABLEAU: ALL * If TABLEAU: is not used, NO is used by default.
SEE ALSO: KEYWORDS, TABLEAU SECTION, LINE OPTIONS
■ - ANALYSIS:
ANALYSIS: is an optional keyword. Its purpose is to allow the user to
specify if an analysis of the solution is to be output.
The analysis is divided into two summaries.
In the variable summary, each variable name, alternate optima check,
activity level, shadow price, input coefficient, and range over which the
input coefficient may vary without altering the solution set is given.
Also shown is the variable ENTERING the basis when this range is exceeded.
In the constraint summary, each name, type, unused capacity/excess
demand, shadow price, input RHS, and range over which the RHS may
vary without altering the solution set is given. Also shown is the
variable EXITING the basis when this range is exceeded.
To activate analysis output, use YES. For no analysis, use NO. E.g.,
ANALYSIS: YES * If ANALYSIS: is not used, YES is used by default.
SEE ALSO: KEYWORDS, ANALYSIS SECTION, LINE OPTIONS
■ - BIG-M:
BIG-M: is an optional keyword. Its purpose is to allow the user to
specify the objective function coefficient given to artificial variables.
LP100 uses the BIG-M improved SIMPLEX algorithm. Starting the SIMPLEX
algorithm requires an artificial variable for the GTE: with the
largest RHS and one for each EQU: constraint. To ensure that the
algorithm removes these as quickly as possible from the basis, a very
large value is given it. BIG-M: allows the user to specify this value.
NOTE: In minimization problems, values in the objective function are
interpreted as contributions to cost. Thus, absolute values should
be used, i.e., 37.6667 MAT123 for the contribution to cost of MAT123.
To specify BIG-M: use the absolute value after the keyword. E.g.,
BIG-M: 1000000 * If BIG-M: is not used, 1,000,000 is used by default.
* 1D+006 may be used instead of 1000000.
SEE ALSO: KEYWORDS, VARIABLES, ARTIFICIAL
■ - TZERO:
TZERO: is an optional keyword. Its purpose is to allow the user to
specify a tolerance value for zero.
LP100, like most computer software, deals with numbers in a finite
precision. In repeated manipulations of numbers that have been truncated
to a specific precision, round-off errors may occur. TZERO: allows for
this somewhat in critical areas by forcing the algorithms to interpret
very small values near 0.00 as 0.00.
LP100 uses IEEE double precision floating-point numbers. With an 80x87
math coprocessor, very fast and precise computations are made. If an
80x87 is not installed, software emulation is used.
To specify TZERO: use the absolute value after the keyword. E.g.,
TZERO: 1D-012 * If TZERO: is not used, 1D-012 is used by default.
* .000000000001 may be used instead of 1D-012.
* If INTEGER: is on, .000001 is used unless /Z: is used.
SEE ALSO: KEYWORDS, INTEGER:, LINE OPTIONS
■ - INTEGER:
INTEGER: is an optional keyword. Its purpose is to allow the user to
specify that an all-integer solution is to be sought.
LP100 uses the cutplane algorithm to solve an all-integer problem. This
requires all RHS values to be integer. The maximum number of cutplanes that
will be used to find a solution is to follow the keyword INTEGER:. The
range is from 0 to 99. If the maximum number of cutplanes is reached, LP100
exits and uses the current solution.
NOTE: If the cutplane technique is going to find a solution, it generally
does so quickly.
The range analysis will not be valid since it is calculated for
continuous ranges. EQU constraints cannot be analyzed.
The memory requirement increases by one constraint and variable
for each cutplane requested.
Because rounding errors are more pronounced, TZERO: is set to .00001.
This can be changed only with /Z:. Solution cannot be guaranteed.
This feature should be used only for small problems.
SEE ALSO: KEYWORDS, TZERO:, LINE OPTIONS
■ - VAR:LTE:GTE:EQU:
VAR:, LTE:, GTE:, EQU: are all required keywords. VAR: declares the
number of decision variables in the model. LTE:, GTE:, and EQU: declare
the number of less-than-equal-to, greater-than-equal-to, and equal-to
constraints, respectively. E.g.,
VAR: 22
LTE: 5 * 3 of these LTE: constraints have negative RHS's
GTE: 3
EQU: 2
NOTE: If the RHS of an LTE: or GTE: is negative, the LTE: or GTE: number
will be adjusted by LP100, e.g., there are 5 LTE:'s and 3 GTE:'s,
yet 3 LTE:'s have negative RHS's. LP100 will transform those 3
LTE:'s to GTE:'s and adjust the LTE: number to 2 and GTE: to 6.
SEE ALSO: KEYWORDS, OBJECTIVE FUNCTION, VARIABLES, CONSTRAINTS
■ - FUNCTION:
FUNCTION: is a required keyword. Its purpose is to mark the start of
the problem definition portion of the model.
You may optionally precede FUNCTION: with OBJECTIVE, e.g.,
OBJECTIVE FUNCTION:.
NOTE: MAX: or MIN: must immediately follow FUNCTION:.
SEE ALSO: KEYWORDS, MIN:MAX:, OBJECTIVE FUNCTION, END:
■ - MIN:MAX:
MIN: and MAX: are required keywords, though only one may be specified.
MIN: indicates to LP100 that the objective function following is a cost
function that is to be minimized, MAX: indicates that the function is a
profit function that is to be maximized.
SEE ALSO: KEYWORDS, OBJECTIVE FUNCTION
■ - END:
END: is an optional keyword. Its purpose is to indicate the end of the
problem definition portion of the model. Any data following END: is not
used.
This keyword is useful if the model is to be extensively documented. All
comments that appear before END: will slow the parsing process.
Therefore, extensive comments should appear after the END: keyword.
NOTE: END: must have nothing else on its line.
SEE ALSO: KEYWORDS, COMMENTS
■ OBJECTIVE FUNCTION
The objective function contains variables and coefficients to those
variables representing its profit or cost. The coefficients used
normally should be positive for both profit and cost problems; the values
are interpreted accordingly by specifing MIN: or MAX:. If, however, in a
profit function a cost is associated with a variable, then that variable's
coefficient should be negative. Likewise in a cost function, if a profit
is associated with a variable, its coefficient should be negative.
All decision variables (number following VAR:) in the problem must
be in the objective function, including those with coefficients
equal to zero, so that LP100 can later recognize them. E.g.,
FUNCTION: MAX: 10 VAR01 + 15.59 VAR02 + 0 VAR03 - VAR04 +...
SEE ALSO: VAR:, VARIABLES, FUNCTION:
■ VARIABLES
Variables are used in linear programming problems to represent an
activity of an operation.
Only decision variables (number following VAR:) are to be input to LP100.
Slack, surplus, and artificial variables of the constraints are created
by LP100, as needed. These variables take the name of their constraint
and are preceded by a - for slack, + for surplus, and ! for artificial
variables.
Each variable may be up to six characters, the first being a letter, and
must be unique, as must variables within constraints, i.e., don't have
two of the same variables in the same constraint. LP100 has excellent
error detection and reporting schemes to indicate these type errors.
Any variable not preceded by a coefficient is given a value of 1.00.
NOTE: Do not use + or - in a variable name nor use E or D alone
as a variable name (it would then be interpreted as a number).
SEE ALSO: OBJECTIVE FUNCTION, SLACK, SURPLUS, ARTIFICIAL, ERRORS
■ CONSTRAINTS
Constraints are used in linear programming problems to represent
limitations to the objective function.
For each less-than-equal-to (LTE) constraint, LP100 adds to the objective
function a slack variable that is named as the constraint, preceded by
a -, and has a coefficient of 0. For each GTE constraint, a surplus
variable is added, preceded by a +, with a coefficient of 0. In addition,
one artificial variable is added for the GTE with the largest RHS,
preceded by a ! and a coefficient of BIG-M. For each EQU, an artificial
variable, preceded by a ! and a coefficient of BIG-M, is added.
The number of each type of constraint is indicated in the declaration
portion (LTE:, GTE:, EQU:). Constraints may be entered in any order, but
LTE, GTE, EQU is recommended. Each constraint is named (as the variables
are), needs to include only the non-zero variables, and end with the RHS
value preceded by the corresponding relational operator (<=, >=, =).
E.g., CON029 5X11 -X22 <= 5000.
SEE ALSO: VARIABLES, SLACK, SURPLUS, ARTIFICIAL
■ - SLACK
For each LTE constraint in the linear programming problem, LP100 adds a
slack variable. This slack variable is to represent the amount of unused
capacity. If, for instance, the total number of hours available for use
of a machine is 280 per month, then if in the optimal solution the total
hours for that machine is 260, then 20 hours is unused, or slack.
This slack capacity has an associated shadow price which indicates the
rate of change of the value of the objective function when the available
resource (capacity) varies. This shadow price is valid only over the
range of optimality for that variable. If one unit more were available,
profit would increase (cost would decrease) by the shadow price; if one
less unit were available, then profit would decrease (cost increase). A
shadow price of zero is given to a slack variable in the final solution
and also to any alternate optima.
A slack variable is named for its constraint, is preceded by a -, and has
an objective function coefficient of 0.
SEE ALSO: CONSTRAINTS, SHADOW PRICE
■ - SURPLUS
For each GTE constraint in the linear programming problem, LP100 adds a
surplus variable. This surplus variable is to represent the amount in
excess of demand. If, for instance, the total number of desks needed by
contract is 100 per month, then if in the optimal solution, the total
desks to be produced that month is 105, an excess, or surplus, or 5 desks
exists, relative to the contract constraint.
This surplus demand has an associated shadow price which indicates the
rate of change of the value of the objective function when the requirement
(demand) varies. This shadow price is valid only over the range of
optimality for that variable. If one unit more were required, profit
would increase (cost would decrease) by the shadow price; if one less unit
were required, then profit would decrease (cost increase). A shadow price
of zero is given to a surplus variable in the final solution and also to
any alternate optima.
A surplus variable is named for its constraint, is preceded by a +, and
has an objective function coefficient of 0.
SEE ALSO: CONSTRAINTS, SHADOW PRICE
■ - ARTIFICIAL
For each EQU constraint in the linear programming problem, LP100 adds an
artificial variable. For the GTE constraint with the largest RHS, LP100
adds an artificial variable. The other GTE constraints are temporarily
transformed into LTE constraints by multipling through by -1. This is a
requirement for starting the SIMPLEX algorithm. If there are no GTE
constraints, a dummy artificial variable is added, nonetheless.
An artificial variable is named for its constraint, is preceded by a !,
has an objective function coefficient of BIG-M and, if in the final
solution, must have an activity level of zero.
NOTE: If an artificial variable of a redundant equality constraint occurs
in the solution with an activity level of zero, the sensitivity
analysis and shadow prices may have been grossly misstated.
Therefore, it is suggested that those equality constraints with
artificial variables in the final solution (indicated by a !) be
removed from the model or changed to a GTE and the model run again.
SEE ALSO: DEGENERATE, ALTERNATE OPTIMA, CONSTRAINTS, BIG-M:
■ DISPLAY SCREEN
Date, time, coprocessor status(87 or mu)/speed index(PC=1.0), and
available memory remaining are shown on top line.
The FILES In/Out display the rightmost 20 characters of the filenames.
OPTIONS display the status of the output switches. If degeneracy is
detected, DEGENERATE is displayed to the right of BIG-M.
INTEGER, BIG-M, and TZERO are displayed.
Constraint and variable counts are displayed.
The SIMPLEX STATUS indicates the time the SIMPLEX algorithm was entered
and its estimated finish. Iterations equals SIMPLEX pivots. Elapsed time
is actual time spent in SIMPLEX (which excludes tableau output and cutplane
formulation). PROFIT EVALUATION is the function value at the current
iteration.
FILE DISPOSITION lists files in queue. The status of the current file is
continually displayed.
■ OUTPUT
The output may be sent either to a disk file or directly to a printer.
Output may include the problem definition listings, a condensed matrix
map, tableaux, and solution analysis in addition to the final solution.
ASCII output is formatted to 132 columns and a page break is generated
for each page with appropriate section headings. Beginning each output
are the necessary printer control codes for the 132 column output and 88
lines/page. Ending each output are the codes to restore the printer to
normal. These codes are EPSON compatible printer codes and work with the
vast majority of dot-matrix printers. (Not the IBM Graphics Printer - the
page length command differs. Use line option /PL:OFF for 66 lines/page.)
Disk output may be edited by any ASCII text editor, or imported to word
processor programs. Registered versions of LP100 can directly output
the analysis and solution sections in LOTUS 1-2-3 WKS format.
NOTE: Make sure that sufficient disk space is available if output is
directed to disk - especially a 360Kb floppy.
SEE ALSO: KEYWORDS, SPREADSHEET, LPEDIT.COM, LINE OPTIONS
■ - LISTING SECTION
The listing section is the LP100 interpretation of the data file. The
data in this section is the actual data used by the program. This
ensures that the correct data has been received by LP100.
If LISTING: has been requested then the objective type (maximization
or minimization), the number of variables, and then the variables and
coefficients are displayed, 4 per line. The constraints follow. For
each of the constraints, the name, row position in the initial tableau,
coefficient and name for non-zero variables is output as is the relational
operator (<=, >=, =) and RHS. If the RHS was negative, an N precedes this.
If LP100 detects an error, such as a duplicate variable name, and listing
has been requested, then the error message is output at the point of the
error. If no listing has been requested, the error message alone is
output.
SEE ALSO: LISTING:, ERRORS
■ - MAP SECTION
The map section contains a condensed listing of the initial matrix
including the decision variables and constraints. Atop each map section
page, a legend of the symbols used is shown. The map heading which
displays vertically the variable names follows. The objective function
and variable symbols are next, and for each constraint, its type, name,
and initial variable coefficients, plus RHS value, are shown.
The map is useful for debugging. At a glance it can show most wildly-off
data entries, as well as positional type errors.
NOTE: If output to a printer, the map should extend no more than the
columns available with the printer. Printers with 132 columns can
print up to 60 variables/line before the following data wraps to
the next line. Many text editors allow column widths of 512
characters or more. With such an editor, the map can be displayed
without the confusing wrap-around.
SEE ALSO: MAP:, TABLEAU SECTION
■ - TABLEAU SECTION
The tableau section contains the objective function, its evaluation, the
basic variables, and the matrix coefficients at that particular tableau.
Either the initial and last tableaux, or all tableaux, may be output,
depending on TABLEAU:. The tableaux can be used for debugging. It is a
detailed version of the matrix map, and is available at every iteration,
whereas the map is available for the initial tableau only. It also can
display all the variables without wrap-around problems since it formats
the output for 8 variables per line, using as many lines as are necessary.
For ease of spotting, a Z follows the objective function evaluation, and
an R follows every RHS.
The SIMPLEX algorithm as implemented in LP100 always solves the problem
as a maximization type. Minimization problems have the original objective
function multiplied through by -1. This will in no way affect the outcome.
It is mentioned here so that the user understands the label MAXIMIZE at
the beginning of each tableau.
SEE ALSO: TABLEAU:, MAP SECTION
■ - ANALYSIS SECTION
The analysis section contains a wealth of information that the user will
find extremely useful. This section is divided into two sections, the
variable summary, and the constraint summary.
Within the variable summary for each variable, an indication is given if
that variable is an alternate optima, the activity level of that variable
(blank if not in the solution), its shadow price, and a sensitivity
analysis (or range of optimality) of the input coefficient. This ranging
indicates the lower and upper values that the input coefficient may take,
everything else remaining the same, and not alter the solution set
(activities and levels of the solution). Where a range is exceeded, the
name of the variable ENTERING the basis is given. Further iterations may
be necessary.
In the constraint summary for each constraint, its type, amount of slack
(surplus), shadow price, and range of optimality for the RHS value is
given. Where a range is exceeded, the name of the variable EXITING the
basis is given. Further iterations may be needed.
SEE ALSO: ALTERNATE OPTIMA, ACTIVITY LEVEL, SHADOW PRICE, UNUSED CAPACITY,
EXCESS DEMAND, RANGE ANALYSIS, ARTIFICIAL
■ - SOLUTION SECTION
The solution section is the bottom line of the linear programming problem.
It indicates a set of variables and activity levels that optimizes the
objective function given the constraints.
The evaluation of the objective function evaluation is the first entry in
this section and equals the optimal profit or cost. Each of the solution
variables, its associated activity level, input coefficient, and extended
amount (of profit or cost) follow.
NOTE: The objective function activity level represents the optimal value
of the profit function (maximize) or cost function (minimize). It
will normally have a positive value - a cost function should be
interpreted as having this much cost. Each of the extended amounts
are likewise representing profit or cost.
NOTE: There should be no artificial variables (!) in the solution set
unless the activity level of that variable is zero. If positive,
the problem is considered infeasible.
SEE ALSO: ARTIFICIAL, OBJECTIVE FUNCTION
■ ALTERNATE OPTIMA
ALTERNATE OPTIMA, or ALT OPT, indicates that a variable not in the
solution set was qualified to be so. Its shadow price will necessarily be
zero. To force this variable into the solution set, scan over to the
range analysis for that variable. Altering that variable's input to
exceed that range by a small amount will cause the alternate variable to
most likely enter the solution (solve the problem again). Additionally,
rearranging variable or constraint order may cause the alternate to enter
the solution. Best, though, is to use a GTE inequality at the level
required for that variable.
If the LP problem is found to be unbounded, the variable that is
responsible is indicated by UNB in the ALT OPT column.
NOTE: If after the first run, you wish to FORCE an alternate optimum into
the solution, DO NOT use an equality constraint. Instead, use a >=
inequality. E.g., X22 is ALT OPT - use CONADD X22 >= 50 as a new
constraint, not CONADD X22 = 50.
SEE ALSO: DEGENERATE, SHADOW PRICE, RANGE ANALYSIS, ARTIFICIAL
■ ACTIVITY LEVEL
Activity level is the value that a variable is to take in order to achieve
the optimal profit (or cost). Blank activity levels should be interpreted
as being zero.
The activity level of FUNCTION in the solution section should be
interpreted as the optimal profit or cost evaluation of the objective
function. It is normally positive.
SEE ALSO: VARIABLE SECTION, SOLUTION SECTION, OBJECTIVE FUNCTION
■ SHADOW PRICE
Shadow prices fall into two categories.
One category indicates the rate of change in the objective function
evaluation if an activity that is not in the solution set is introduced in
the solution anyway. This marginal cost represents the amount by which
that activity, or variable, is 'too expensive' to be included in the
solution set. This category is attributable to the decision variables
in the VARIABLE SUMMARY.
The other category indicates the rate of change in the objective function
evaluation when the RHS value of a constraint changes. This marginal cost
represents the amount by which the objective function value will vary with
changes in the RHS. This category is attributable to the constraints
(and the slack and surplus variables in the VARIABLE SUMMARY) in the
CONSTRAINT SUMMARY.
Shadow prices are valid only over that variable/constraint's range of
optimality.
SEE ALSO: ANALYSIS SECTION, RANGE ANALYSIS, ARTIFICIAL
■ UNUSED CAPACITY
The unused capacity in the constraint summary of the analysis section
represents the amount of left-over resource for that LTE constraint. It
is included in the solution set as a slack variable.
SEE ALSO: EXCESS DEMAND, SLACK
■ EXCESS DEMAND
The excess demand in the constraint summary of the analysis section
represents the amount of over-produced requirement for that GTE
constraint. It is included in the solution set as a surplus variable.
SEE ALSO: UNUSED CAPACITY, SURPLUS
■ RANGE ANALYSIS
Range analysis, also called sensitivity analysis, gives the user useful
information on the sensitivity of the data used in the problem. Since
accurate data may be expensive to obtain, a model using the best available
data can be used initially. The analysis section can then be used to
determine which data are the most sensitive. These can then be further
researched.
Range analysis is performed on each of the variables and constraints. For
each variable, its input coefficient is analyzed to see over which range
of values it may take while not altering the solution set, everything else
remaining the same. Likewise for each constraint, except its RHS value is
analyzed.
Additionally, the variable ENTERING (variable EXITING for constraints) the
basis (solution set) when a range is exceeded is shown. This variable may
or may not be part of the final solution set, since additional iterations
of the simplex algorithm may be needed.
SEE ALSO: SOLUTION SECTION, ARTIFICIAL
■ DEGENERATE
If there are redundant constraints in a problem, it is possible that a
degenerate solution may develop (if so, DEGENERATE will be displayed on
the screen.) Degeneracy in itself does not pose any problems, usually.
It may, however, lead to a problem known as cycling. Cycling, once
developed, causes the computer code to endlessly cycle with no
improvement in the objective function. Fortunately, this seldom
occurs with real-world problems. Altering the order of constraints
or variables usually corrects this problem, should it ever occur.
Another problem associated with degeneracy is when an ALT OPT variable
is forced into a succesive LP100 solution set by using an equality (=)
constraint. This constraint will necessarily be redundant. Rather,
use an inequality (>=). Otherwise, the sensitivity analysis and shadow
prices may be grossly misstated. This problem is easily identified:
one, an artificial(!) variable(s) will be in the solution set (at zero)
and two, a shadow price(s) will be grossly misstated (by BIG-M). At
this point, the equality constraint(s) with its artificial (!) in the
solution should be removed or changed to an inequality (>=), and rerun.
SEE ALSO: DISPLAY SCREEN, ARTIFICIAL, ALTERNATE OPTIMA
■ ABORTING
Pressing Esc will have the following effect on LP100. If LP100 is:
PARSING DECLARATIONS, or
PARSING OBJECTIVE FUNCTION, or
PARSING CONSTRAINTS, or
OUTPUTING SOLUTION then pressing Esc will end the current problem, or if:
OUTPUTING MAP, or
OUTPUTING TABLEAU, or
OUTPUTING ANALYSIS then pressing Esc will skip that particular section and
continue, otherwise, if LP100 is:
FINDING FEASIBLE SOLUTION, or
ADDING CUTPLANE, or
OPTIMIZING then pressing Esc will cause LP100 to complete the current
simplex iteration as if it had found an optimal solution.
Also available is an immediate abort key: <Ctrl><F1>. Upon pressing this
key combination, the entire LP100 session is immediately aborted to DOS.
SEE ALSO: ERRORS
■ SPREADSHEET
LP100 allows the user to use LOTUS 1-2-3 or Symphony as a tool to create
LP100 data files. 1-2-3 versions through 2.01 and Symphony through 1.1
can be directly read by LP100. Future versions of these spreadsheets may
or may not produce compatible file formats. If a version later than those
above is used and LP100 reports an unknown LOTUS file format, then try
changing the filename extension from WKS, WK1, WRK or WR1 to WKX. This
instructs LP100 to disregard the format code of the file. If this should
not produce correct results, then 'print' the spreadsheet to an ASCII file.
If the OUTPUT: specifies that output should be sent to a file with an
extension of WKS, then LP100 will format the analysis and solution sections
in LOTUS 1-2-3 version 1A format. This file can be read by many
spreadsheet programs, not just those of LOTUS. The listings, matrix map,
and tableaux will also be output, but in ASCII format. If there are no
errors, this ASCII output will be overwritten by the analysis and solution
sections in WKS format.
NOTE: LOTUS 1-2-3 WKS output is functional only in registered versions.
SEE ALSO: EXAMPLE, LPEDIT.COM
■ LPEDIT.COM
To put a linear program in LP100 compatible form requires an ASCII text
editor. Many word processors also allow their output to be in ASCII and
even some spreadsheets programs can 'print' to an ASCII file.
Included with the LP100 package is a full-screen text editor that allows
basic text editing. To edit a new file, include the new filename on the
command line after LPEDIT, or, use an existing one to edit an old file.
E.g., C>LPEDIT EXAMPLE.LP
Commands are issued via the F keys and are displayed on the last line.
The maximum file size is 64Kb. Maximum width of a line is 248 characters.
The keypad keys are used to position the cursor and <Ctrl> left/right-arrow
is used to pan left and right. A minimum of 131K of free RAM is needed by
the editor.
NOTE: The F3-PRINT key is used to print marked text only.
SEE ALSO: LPDEMO.EXE, SPREADSHEET
■ LPDEMO.EXE
This program will guide you step-by-step in the creation and solution
of EXAMPLE.LP. Just type C>LPDEMO.
The program is set to advance to the next step after specific time
intervals indicated by a countdown timer at the lower-right of the
LPEDIT screen, but may be user-stepped by pressing a key.
Pressing <Esc> in the first two screens only will exit the program
early.
The program requires that COMSPEC (usually COMMAND.COM) be accessible, &
that LP100.EXE be in PATH or the current directory, and that EXAMPLE.LP
be in the current directory. If these conditions are not met then a
limited demo is executed.
■ ERRORS
See the following screens for error information.
■ - FILE
File errors occur when LP100 is unable to access either the input data
file or create the output file. These type errors cause LP100 to abort
to the next file in the queue.
FILE NOT FOUND indicated file was not found
CANNOT OPEN INPUT indicated file cannot be opened (bad name)
CANNOT OPEN OUTPUT indicated file cannot be opened (bad name)
■ - DECLARATION
Declaration errors occur when LP100 is unable to properly format the model
as given. Since an output channel may not have been assigned, error
reporting is done on the disposition line of the display screen. If a
single error was detected, the error itself, followed by its code, is
listed on this line. If, however, more than one error was detected, the
error message *** MULTIPLE DECLARATION ERRORS is listed followed by a code
indicating the errors. LP100 then aborts to the next file in the queue.
The error codes are:
00000001 VAR: NOT FOUND In the case of multiple errors,
00000010 LTE: NOT FOUND combinations of these codes will
00000100 GTE: NOT FOUND be output, e.g., 00001001 means
00001000 EQU: NOT FOUND that VAR: and EQU: were not found
00010000 FUNCTION: NOT FOUND in the LP data file.
00100000 MAX: or MIN: NOT FOUND
01000000 UNKNOWN CHARACTER IN DECLARATION
SEE ALSO: KEYWORDS
■ - OBJECTIVE FUNCTION
Objective function errors occur when LP100 is unable to properly read and
interpret the objective function. Since an output channel will have been
made by this point, the error report is sent to the output. The display
screen will show the error message *** OBJECTIVE FUNCTION ERROR and the
error code and LP100 aborts to the next file in the queue. The error
codes are:
00000001 FORMULATION BAD NEAR VARIABLE too many operators (+/-)
00000010 UNKNOWN VARIABLE # indicated character/variable not expected
00000100 DUPLICATE VARIABLE # indicated variable used more than once
Multiple errors are NOT detected - only the first.
SEE ALSO: OBJECTIVE FUNCTION
■ - CONSTRAINT
Constraint errors occur when LP100 is unable to properly read and interpret
a constraint. Since an output channel will have been made by this point,
the error report is sent to the output. The display screen shows the
error message *** CONSTRAINT ERROR and the error code and LP100 aborts to
the next file in the queue. The error codes are:
00000001 FORMULATION BAD too many operators (+/-)
00000010 UNKNOWN VARIABLE indicated variable not in FUNCTION:
00000100 DUPLICATE NAME indicated name used more than once
00001000 ILLEGAL CONSTRAINT NAME indicated name is illegal
00010000 LTE: count does not match declaration
00100000 GTE: count does not match declaration
01000000 EQU: count does not match declaration
10000000 MATRIX ALLOCATION OVERRUN count of LTE: + GTE: does not match
Multiple errors are possible with the additional possibility of erroneous
errors being indicated (...count does not...) since parsing is stopped
after the first error.
SEE ALSO: CONSTRAINTS
■ - 123 READ
When input is taken from a LOTUS file the following errors may occur.
These cause LP100 to abort to the next file in the queue.
FILE NOT FOUND indicated file was not found
CANNOT OPEN INPUT indicated file cannot be opened (bad name)
UNKNOWN OR CORRUPT LOTUS FILE format code unknown
SEE ALSO: SPREADSHEET
■ - 123 WRITE
When ouput is sent to a WKS file the following errors may occur.
These cause LP100 to abort to the next file in the queue.
LOTUS OUTPUT FUNCTIONAL ONLY IN REGISTERED LP100 VERSIONS
CANNOT OPEN OUTPUT indicated file cannot be opened (bad name)
SEE ALSO: SPREADSHEET
■ - INFEASIBLE MODEL
An INFEASIBLE MODEL error occurs if, at the time SIMPLEX algorithm has
found an optimal solution, an artificial variable remains in the basis
(solution set) at a positive activity level. The next file is begun.
SEE ALSO: ARTIFICIAL
■ - UNBOUNDED MODEL
An UNBOUNDED MODEL error occurs if, at anytime in the SIMPLEX algorithm, a
variable can be introduced without bound. The unbounded variable is
identified by UNB in the ALT OPT column. The next file is begun.
SEE ALSO: ALTERNATE OPTIMA
■ - ABORT
An ABORT error occurs if the user presses <Esc> to abort the current
problem that LP100 is solving or if the user presses <Ctrl><F1>
to immediately abort the LP100 session to the system.
NOTE: If Esc is pressed in certain LP100 routines, that and only that
routine is exited early. Output will indicate this if it occurs.
SEE ALSO: ABORTING
■ - RUN-TIME
A RUN-TIME error may occur under certain circumstances. These are rare
and in such an event, the LP100 session is aborted to DOS.
6 NUMBER OVERFLOW 24 DEVICE TIMEOUT
7 OUT OF MEMORY 25 DEVICE FAULT
11 DIVISION BY ZERO 27 OUT OF PAPER
14 OUT OF NEAR SPACE 61 DISK FULL
52 to 76 are mostly hardware/disk related errors.
If a run-time error continues to occur see REPORT BUGS TO...
In addition to the RUN-TIME error number, the MODULE and LEVEL at which
the error occured are indicated on the disposition line.
Run-time errors 7 and 14 are handled specially by LP100. The message
<< OUT OF MEMORY >> will be displayed on the disposition line with
no MODULE or LEVEL report available. This generally means that the
problem you have specified is too large.
■ REPORT BUGS TO...
Though LP100 has been through significant testing, minor bugs may occur.
If you experience any problems in using LP100 write a complete description
of the problem using BUG REPORT FORM form as a guide. Also include a
listing of the model, and if possible, include the model on a 5 1/4" 360K
floppy. Send this to:
Cornel Huth
ATTN: LP100 v2.10 REPORT
6402 Ingram Rd.
San Antonio, TX 78238
If necessary, call (512)684-8065 (7PM-9PM CENTRAL TIME)
Assistance can be given ONLY in the use of LP100, NOT with the
linear programs/models that need to be formulated. For such help,
consult with those experienced in operations research, or seek such
information from the library of any good college.
SEE ALSO: BUG REPORT FORM
■ - BUG REPORT FORM
Program: LP100 Ver: 2.10 S/N:_______-__ Have you registered? __
Name: ________________________________________________________
Addr: ________________________________________________________
________________________________________________________
________________________________________________________
Phone: ( ) ______ - _________ ext. ______ (only if collect)
Describe the problem, the circumstances of its happening, and
any errors reported by LP100 or the system. Include a description of
the hardware and operating system and any other software loaded in
memory.
Any suggestions for improvement will be appreciated.
SEE ALSO: REPORT BUGS TO...
■ SPECIFICATIONS Version 2.10
MINIMUM REQUIREMENTS: 256K IBM-PC or compatible, DOS 2.1, one floppy drive.
CHKDSK must report at least 215000 bytes free to start LP100.
The maximum problem size depends on available memory. Use this formula
to APPROXIMATE the number of K bytes needed by LP100 as displayed in the
upper-right corner of the display screen at start-up (at 99%).
{[(VAR:+LTE:+GTE:+EQU:+2)*(LTE:+GTE:+EQU:+1)*8]+32000}/1024 = K RAM needed
With 440K RAM free, over 48,000 total matrix elements are possible (this
is equal to 400 variables and 100 constraints).
The LP100 programs were compiled with the Microsoft QuickBASIC 4.0 compiler
and total approximately 6200 lines of source code.
The 8087/80287 math coprocessor is used if available.
This version of LP100 uses BIOS for video output and has been used in the
DoubleDOS multitasking environment running in the background at >= 50%.
■ INCLUDED FILES LIST Version 2.10
README initial instructions & information
LP100.EXE linear programming optimizer 161561 bytes in size
LPDEMO.EXE demonstration program 45077 bytes
LPHELP.EXE help program 45347 bytes
LPEDIT.COM full-screen ASCII text editor 3000 bytes
LP100.HLP data file used by the help program
LP100.TXT LP100 User Guide in ASCII format
BATCHRUN.BLP ASCII batch file example
EXAMPLE.LP ASCII LP data file (simple example)
BUDGETSS.LP ASCII LP data file (budget example)
INTEGER.ILP ASCII LP data file (all-integer example)
EXAMPLE.WKS WKS spreadsheet LP data file (similar to EXAMPLE.LP)
XOUT.WKS WKS spreadsheet LP data output from EXAMPLE.WKS
NOTE: Be sure to make a working copy of this disk.
■ SHAREWARE
Shareware is a means that software authors have of releasing their
product without the overhead costs of marketing and packaging. This
gives users the option of obtaining a quality product at a truly
reasonable price. It also may be the only means of obtaining software
that is not available elsewhere, at any price.
What this means is that users can use the product on a trial basis
without any obligation to purchase the software. Generally, users may
freely distribute the product to others provided that any licensing
agreement or stipulations that the author has specified be followed.
The shareware concept does not allow a user to continue using the product
after the trial period unless the license agreement has been fulfilled or
otherwise been given permission by the author.
***************************** NOTICE **********************************
All LP100 *.EXE programs in the INCLUDED FILES LIST are the sole
property of Cornel Huth and are Copyright 1988,1989 by Cornel Huth.
SEE ALSO: LICENSE AGREEMENT, REGISTRATION FORM
■ - LICENSE AGREEMENT
USAGE: LP100 may be used on a trial basis for 30 days. After this, the
user promises to fulfill this license agreement or discontinue using LP100.
By using LP100 you agree to abide by this LICENSE AGREEMENT.
FULFILLMENT: A limited license for using LP100 on a single computer may
be purchased for $45.00. Site licenses are $180.00. After receiving
payment, a current, registered version and receipt of payment is sent.
DISTRIBUTION: LP100 may be distributed without the author's permission
only if the following three stipulations are followed:
1. The LP100 package must be distributed complete, including ALL files
listed in INCLUDED FILES LIST.
2. The LP100 package CANNOT be sold for profit. Recovery of costs
associated with distribution is allowed (NO PROFIT).
3. ONLY the SHAREWARE version of the LP100 package may be distributed.
SEE ALSO: SHAREWARE, REGISTRATION FORM
■ - REGISTRATION FORM
Name of licensee: ________________________________________________
(to appear on title screen and output)
Amount paid: $ ____________ (1-$45.00, 2-90.00, 3-135.00, 4>180.00)
Comments: _________________________________________________________
_________________________________________________________
Contact: _____________________ Phone:( ) ____ - ______ ext. ____
Would you like to be added to our mailing list? _________
Mail to: _________________________________________________________
_________________________________________________________
_________________________________________________________
Send payment to: Cornel Huth
ATTN: LP100 v2.10 REGISTRATION
6402 Ingram Rd.
San Antonio, TX 78238
■ TRADEMARKS
* Microsoft and QuickBASIC are registered trademarks of Microsoft Corp.
* Lotus, 1-2-3, Symphony are registered trademarks of Lotus Development Corp.
* VP-PLANNER is a registered trademark of Paperback Software International
* IBM is a registered trademark of International Business Machines Corp.
* DoubleDOS is a registered trademark of SoftLogic Solutions, Inc.
* ScanSoft, LP100, LP OPTIMIZER are trademarks of ScanSoft, Inc.
________________________________________________________________________________
SUPPORT SHAREWARE.
■ ENDOFHELP terminate help items